/*
 * Items.cpp
 *
 *  Created on: 10.12.2009
 *      Author: Sergej Schmidt
 */
#include"Items.h"

using namespace std;

Items::Items() : m_pItems(0), m_nSize(0)
{
}

Items::~Items()
{
	if( m_pItems )
	{
		delete m_pItems;
		m_pItems = 0;
	}
}
void Items::Load()
{
	Item		_buffer;
	list<Item>	_liste;
	// читаем с файла во временный список, так как нужно узнать колчество элементов
	fstream file( "./Data/items.data", ios::in | ios::binary );
	if(!file)
	{
		throw SwsoException("./Data/items.data невозможно открыть");
	}
	while(file.good())
	{
		file.read( reinterpret_cast<char*>(&_buffer), sizeof(_buffer) );
		_liste.push_back( _buffer );
	}
	file.close();
	// перекидываем с временного списска
	m_pItems = new Item[_liste.size()];
	m_nSize = 0;

	while(!_liste.empty())
	{
		cout << _liste.front().Values.Id << endl;
		m_pItems[m_nSize++] = _liste.front();
		_liste.pop_front();
	}
}
void Items::Localize()
{
	if( m_nSize<1 ) return;
	//
	Parser* _parser = new Parser("./Data/items." + GameManager::getSingleton().getOptionParser()->getString("language"));
	int _pointer = 0;
	unsigned int _id;

	while( _pointer < m_nSize+1 )
	{
		_id = m_pItems[ _pointer ].Values.Id;
		strcpy( m_pItems[ _pointer ].Name, _parser->getString( string(_id + "_Name") ).c_str());
		strcpy( m_pItems[ _pointer ].Subname, _parser->getString( string(_id + "_Subname") ).c_str());
		strcpy( m_pItems[ _pointer ].Note, _parser->getString( string(_id + "_Note") ).c_str());
		_pointer++;
	}
}
void Items::DebugSave()
{
	// TODO удалить нужен только для наглядности
	ItemValues	_bufferv;
	list<Item>	_liste;
	// SPEICHERN
	fstream file( "./Data/items.data", ios::out | ios::binary );
	if(!file)
	{
		throw SwsoException("./Data/items.data невозможно открыть");
	}
	_bufferv.Id = 1;
	_bufferv.Type = IT_OTHER;
	_bufferv.Bay = 25;
	_bufferv.Sale = 10;
	file.write( (const char*)&_bufferv, sizeof(_bufferv) );
	_bufferv.Id = 2;
	_bufferv.Type = IT_ARMOR;
	_bufferv.Bay = 250;
	_bufferv.Sale = 100;
	file.write( (const char*)&_bufferv, sizeof(_bufferv) );
	_bufferv.Id = 3;
	_bufferv.Type = IT_WEAPON;
	_bufferv.Bay = 35;
	_bufferv.Sale = 14;
	file.write( (const char*)&_bufferv, sizeof(_bufferv) );
	_bufferv.Id = 11;
	_bufferv.Type = IT_PROJECTIL;
	_bufferv.Bay = 48;
	_bufferv.Sale = 11;
	file.write( (const char*)&_bufferv, sizeof(_bufferv) );

	file.close();
	// LADEN
	fstream datei( "./Data/items.data", ios::in | ios::binary );
	if(!datei)
	{
		throw SwsoException("./Data/items.data невозможно открыть");
	}
	datei.read( (char*)&_bufferv, sizeof(_bufferv) );
	cout << _bufferv.Bay << endl;
}
